// auth.js - 认证相关API
import axios from '../plugins/axios'

// 创建axios实例
const request = axios.create({
  baseURL: 'http://localhost:8080', // 后端API基础URL
  timeout: 10000, // 请求超时时间
})

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 从localStorage获取token
    const token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  },
  error => {
    console.error('请求错误', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  response => {
    const res = response.data
    // 如果返回的状态码为200，说明接口请求成功，可以正常返回数据
    if (res.code === 200) {
      return res
    }
    // 否则的话抛出错误
    return Promise.reject(new Error(res.message || '未知错误'))
  },
  error => {
    console.error('响应错误', error)
    return Promise.reject(error)
  }
)

/**
 * 登录API
 * @param {Object} data 登录参数 {username, password}
 * @returns {Promise} 返回登录结果
 */
export function login(data) {
  return request({
    url: '/api/auth/login',
    method: 'post',
    data
  })
}

/**
 * 注册API
 * @param {Object} data 注册参数
 * @returns {Promise} 返回注册结果
 */
export function register(data) {
  return request({
    url: '/api/auth/register',
    method: 'post',
    data
  })
}

/**
 * 登出API
 * @returns {Promise} 返回登出结果
 */
export function logout() {
  return request({
    url: '/api/user/logout',
    method: 'post'
  })
}

/**
 * 获取当前用户信息API
 * @returns {Promise} 返回用户信息
 */
export function getUserInfo() {
  return request({
    url: '/api/user/info',
    method: 'get'
  })
}

/**
 * 检查用户名是否已存在
 * @param {String} username 用户名
 * @returns {Promise} 返回检查结果
 */
export function checkUsername(username) {
  return request({
    url: '/api/auth/check-username',
    method: 'get',
    params: { username }
  })
} 